package com.IO;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

public class TestFileInputStream {
    public static void main(String[] args) throws IOException {
        //===========文件输入流的构造方法==============
        /*
            创建文件输入流时,如果参数 路径下没有该文件
            会报错FileNotFoundException
        */

        //File对象为参数创建FileInputStream类
        File f1 = new File("E:\\testFile\\testFileIn.txt");
        FileInputStream fis = new FileInputStream(f1);
        //名称字符串为参数创建FileInputStream类 推荐
        FileInputStream fis2 = new FileInputStream("E:\\testFile\\testFileIn.txt");

        //============FileInputStream类读取字节方法===========
        //int read() 每次可读取一个字节的数据,读到末尾返回-1
        int read;
        while ((read = fis2.read())!=-1){
            System.out.print((char) read);//hello my friends
        }
        //int read(byte[] b) 每次读取b.lenth个字节到数组b中，返回读取到的有效字节个数，读取到末尾时，返回-1
        int len;//接受返回值
        byte[] b = new byte[3];
        while ((len = fis.read(b))!=-1){
//            System.out.println(new String(b));
            System.out.println(new String(b,0,len));
            /*
                  hel
                  lo
                  my
                  fri
                  end
                  snd //这里,多读了nd,
                  原因时最后一次仅有一个字符,
                  而上一个字符数组end,替换了e
                  还留下了nd
                  用System.out.println(new String(b,0,len));可避免
            */
        }

        fis.close();
        fis2.close();
    }
}

    